package com.whmall.service.crm.api;

import com.whmall.service.crm.entity.dto.companycontact.CompanyContactRspDTO;
import com.whmall.service.crm.entity.dto.companycontact.CreateOrUpdateCompanyContactReqDTO;

import java.util.List;

/**
 * 公司联系人API
 *insertCategoryCustomerInquiry
 * @author alex
 * @since 2020/8/5
 */
public interface CompanyContactApi {
    /**
     * 创建公司联系人
     *
     * @param companyId   公司ID
     * @param requesterId 请求员工ID
     * @param request     创建请求
     */
    void createCompanyContact(Long requesterId, Long companyId, CreateOrUpdateCompanyContactReqDTO request);

    /**
     * 更新公司联系人
     *
     * @param companyId        公司ID
     * @param requesterId      请求员工ID
     * @param companyContactId 公司联系人ID
     * @param request          更新请求
     */
    void updateCompanyContact(Long requesterId, Long companyId, Long companyContactId, CreateOrUpdateCompanyContactReqDTO request);

    /**
     * 移除公司联系人
     *
     * @param companyId        公司ID
     * @param requesterId      请求员工ID
     * @param companyContactId 公司联系人ID
     */
    void removeCompanyContact(Long requesterId, Long companyId, Long companyContactId);

    /**
     * 根据公司以及公司联系人ID获取对应的联系人信息
     *
     * @param companyId        公司ID
     * @param companyContactId 公司联系人ID
     * @return 找到返回对应的联系人信息，否则将返回null
     */
    CompanyContactRspDTO getByCompanyIdAndCompanyContactId(Long companyId, Long companyContactId);

    /**
     * 根据公司ID查询所有联系人列表
     *
     * @param companyId 公司ID，不允许为null
     * @return 公司联系人列表
     */
    List<CompanyContactRspDTO> listByCompanyId(Long companyId);
}
